約 4,657,059 件
https://w.atwiki.jp/interaction_android/pages/26.html
Androidのセットアップ ここでは、簡単にセットアップについて述べます (1)必要なファイル android-sdk_r17-windows.zip lpls159.exe(解凍ソフトがない場合) RapidEE_setup.exe(環境変数の設定を簡単にしたい方) (2)x64(64bit版) jdk-7u3-windows-x64.exe eclipse-jee-indigo-SR2-win32-x86_64.zip (3)x86(32bit版) jdk-7u3-windows-i586.exe eclipse-java-indigo-SR2-win32.zip 1.解凍ソフトPCに解凍ソフトが入っていない場合は「lpls159.exe」により「Lhaplus」をインストール 2.環境変数変更ソフト環境変数を簡単に変更できるように「RapidEE_setuo.exe」をクリックし、「RapidEE」をインストール 3.Java環境のセットAndroidないしEclipseはJava環境が必要なので「jdk-7u3-windows-i586.exe」によりJavaをインストールする。 項目はすべてはいないしOK 4.Cドライブの直下に「Android」フォルダを作成C \Androidとなるように 5.解凍「android-sdk_r17-windows.zip」と「eclipse-java-indigo-SR2-win32.zip」をAndroidフォルダで解凍 6.SDKのインストール「SDK Manager.exe」をクリックし、Android SDKをインストール。 すべてにチェックを入れてInstallする 7.環境パスの設定「RapidEE」を起動し、以下の分をPathの中に追加する(Add Value)。 C \Android\android-sdk-windows\platform-tools(SDKのフォルダ名によってandroid-sdk-windowsは変更すること) C \Android\android-sdk-windows\tools(SDKのフォルダ名によってandroid-sdk-windowsは変更すること) C \Program Files\Java\jdk1.7.0_03\bin C \Program Files\Java\jre7\bin 8.Eclipseの起動1~7インストール後、Eclipseの[Help]→[Install Software...]をクリック ADDをクリックし、[Android Plugin] と [https //dl-ssl.google.com/android/eclipse/]を記述しNextを押していく 再起動されればOK 9.完了これで、Androidの環境開発完了 仮に、エミュレータを作成し、実行する。ここで、エミュレータのバージョンがすべてないときは[Windows]→[Preferences]→[Android]のSDL LocationをSDKを入れたフォルダに変更 10.環境セット[Windows]→[Preferences]→[General]→[Workspace]にて文字コードを[UTF-8]に変更すること
https://w.atwiki.jp/api_programming/pages/195.html
下位ページ インテントとインテントフィルタ サービス(Service) ストレージオプション フラグメント(Fragment) プロセスとスレッド(processes and threads) リストビュー(List View) レイアウト(Layout) 入力コントロール(Controls) 設定(Setting) 通知(Notification) Content スピナーコントロールの設定レイアウトの準備 選択肢の設定string.xmlでの設定 プログラム側から値を選択する アクティビティアプリの閉じられ方で、挙動が異なる アクションバーの代わりに、ツールバーを使うアクションバーを消す ツールバーをレイアウトに追加する Activity内で、アクションバーの代わりに使う記述をする スライドメニューを実装するドロワーレイアウトを作成する ドロワービューの中身を準備するListViewで作る 別のXMLファイルで作る ドロワーのオープン・クローズを実装する バックグラウンド処理(サービス) 閉じられても動作するサービスを動かすServiceクラスの作成 Activityから、作成したサービスを動かす 加速度センサの情報を受ける 回転角の情報を受け取る回転角の解釈 画面の回転を抑制するAndroidManifest.xmlで抑制する 動的に(プラグラム内で)で抑制する インテントにオブジェクトの情報を乗っけるparcelable をインプリメントしたクラスをつくるParcelable.Creater フィールドの実装 BundleやIntentに情報を乗せる Activity側で受ける 複数の情報をリストにして表示する バイブレーションを一定時間、作動させるパーミッションの追加 Vibratorオブジェクトを生成する vibrateを実行する 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定するメニューリソースを準備するフォルダの作成 リソースファイルの作成 設定したメニューファイルを、Activityのメニューバーに評させる メニューの選択を受け取る処理を作る チェックボックスを動作させる 設定画面を設定する/設定情報をローカルストレージに残す 記録内容をGoogleスプレッドシートに記録する 記録内容をGoogleカレンダーに記録するブラウザでURLを開く ブラウザを開くURIとして、認証ページを指定する リダイレクトを受け取る 受け取ったリダイレクトをデータに紐解く codeを送って、tokenを受け取る tokenを保存する 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する USBデバッグ リリースビルド スピナーコントロールの設定 [部分編集] レイアウトの準備 Spinner android id="@+id/planets_spinner" android layout_width="fill_parent" android layout_height="wrap_content" / 選択肢の設定 string.xmlでの設定 まずは、string.xmlに文字配列を作る string-array name="planets_array" item Mercury /item item Venus /item item Earth /item /string-array この文字配列をアダプタにして、スピナーコントロールにアダプタをするリソースのアダプタ化には、ArrayApapter.createFromResource を使用できる。simple_spinner_item はデフォルト外観を設定している。通常はこれで良し。 setDropDownViewResource(int) は選択時に一覧を表示するのに使う。なくても一応ドロップダウンは出てくるが、ちょっとしょぼい? Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter CharSequence adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); createFromResource - ArrayAdapter | Android Developers setDropDownViewResource - ArrayAdapter | Android Developers プログラム側から値を選択する Spinner.setSelection で位置を指定する。その位置を取得するにはAdapterを使う。 使っているアダプタを取得するobjSpinner.getAdapter でアダプタを取得できる objAdapter.getPosition("...") でセレクタの位置を取得値が見つからなかったら -1 が返る objSpinner.setSelection に先程取得した位置を設定する ArrayAdapter spinnerAdapter = (ArrayAdapter) objSpinner.getAdapter(); int i = spinnerAdapter.getPosition("value"); objSpinner.setSelection(i); getAdapter - AbsSpinner | Android Developers getPosition - ArrayAdapter | Android Developers setSelection - AbsSpinner | Android Developers アクティビティ アプリの閉じられ方で、挙動が異なる onDestroyが呼ばれない限りは、Serviceを使わずとも、 ↓にある通り、ホームボタンとバックボタンでアプリケーションから離れた場合で挙動が違う。 https //kokufu.blogspot.jp/2011/03/activity.html 説明として、 ホームボタン:ホームアプリケーションが起動している バックボタン:Activityスタックからポップしている と書いてあったが、気持ち悪いのは、□ボタンを押すとあたかもまだ生きているかのように、アプリケーションリストに表示されるから。画面上に残っているが実際には onDestroy で消えている。 このあたりが、「アプリケーションをスワイプして消しても消さなくてもメモリにはそれほど影響しない」ということなんだろうか。 アクションバーの代わりに、ツールバーを使う [部分編集] 今後の拡張性から、アクションバーよりツールバーを使ったほうが良い、という記述をちょこちょこ見かけるが、Android Studioでプロジェクトを作ると、基本はアクションバーが設定されている。これをツールバーに置き換える。 アプリバーの追加 | Android Developers Toolbar | Android Developers AndroidのToolBar(新しいActionBar)メモ | Qiita アクションバーを消す res/values/styles.xmlで AppThemeのテーマを変更する style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar" ツールバーをレイアウトに追加する android.support.v7.widget.Toolbar android id="@+id/toolbar" android layout_width="match_parent" android layout_height="wrap_content" / レイアウトの@android */* ,?attr/* ,?* ,?android attr/* の違い | Qiita Activity内で、アクションバーの代わりに使う記述をする /* ToolBarの設定 */ Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitleTextColor(Color.WHITE); // 設定をしておく setSupportActionBar(toolbar); // アクションバーの代わり、という設定 これを書かないと、画面上では何も表示されない(空間だけはある) スライドメニューを実装する [部分編集] NavigationDrawer が正式名称? DrawerLayout | Android Developers ナビゲーションドロワーの作成 | Android Developers ドロワーレイアウトを作成する レイアウトxmlにて、DrawerLayout オブジェクトをレイアウトのルートビューとして指定する。 ルートの中にドロワービューとメインビューを設定する順序はメインビューを先にする高さはルートに合わせる(match_parent) 次にドロワーのビューを指定するlayout_gravityを指定する(layout_gravity:どっちにくっつけるか、どちら方向から出てくるか?)右から左に出す場合にはstart layout_heightは親ビューと同じ高さを指定する layout_widthはすべての情報が見える幅を指定する ドロワービューの中身を準備する ListViewで作る ListViewの中に android layout_gravity="..." を入れないと、スライドで入ってくる設定にならず、重ねて見えている状態になる android background="#111" 背景がないと、中途半端にすけた状態で表示される。 別のXMLファイルで作る NavigationViewで作った場合、ヘッダ部分とメニュー部分をそれぞれレイアウトとメニューで作成する app headerLayout="@layout/drawer_header" app menu="@menu/drawer" ドロワーのオープン・クローズを実装する DrawerLayout にリスナーをセットする。このリスナーは DrawerLayout.DrawerListener を実装して、使う。 Activity にアクションバーがセットされている場合は ActionBarDrawerToggle が DrawerLayout.DrawerListener を実装する。 DrawerLayout mDrawerLayout = ...; ActionBarDrawerToggle mDrawerToggle; mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) {...} public void onDrawerOpened(View drawerView) {...} }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); 【Android】スライドして表示されるメニュー | Qiita Navigation Drawer の概要 | Android 開発入門 Navigation Drawer の基本的な実装方法 | Android 開発入門 バックグラウンド処理(サービス) サービス - Android Developers Androidアプリでのバックグラウンド処理と通知機能 | Android Studio 2で始めるアプリ開発入門 - CodeZine 流れ Serviceのサブクラスを作成する AndroidManifest.xmlにサービスを登録 サブクラスで、必要なクラスをオーバーライドする。次のあたり。onCreate() onStartCommand() onDestroy() アクティビティからサービスを起動する (きちっと止まるように設計しておく) 閉じられても動作するサービスを動かす バックグラウンドで動作させるためにはServiceを用いる。 Serviceクラスの作成 Activityのように、作成・開始などのイベントで動くが、おもに3つ。 onCreate onStartCommand onDestroy Service | Android Developers Activityから、作成したサービスを動かす startServiceで起動、stopService(stopSelf)で停止。忘れずにServiceを止めないと、いつまでも動き続ける。 startService、stopServiceなどには、インテントを準備して、サービスにそれをなげる形をとっている。 startService - Context | Android Developers stopService - Context | Android Developers stopSelf - Service | Android Developers 加速度センサの情報を受ける 回転角の情報を受け取る センサーは加速度まではそのまま読み取れるが、回転角は加速度情報、地磁気情報から計算する必要がある。まず getRotationMatrix で回転行列を求め、getOrientation で回転行列を回転角に変換する(計算する) getRotationMatric - SensorManager | Android Developers getOrientation - SensorManager | Android Developers 引数に取った2つの配列には、傾斜行列、回転行列(の情報)が計算されて入ってくる。情報が不要ならnullでよい。 回転角の解釈 正位置として Zは天を指す Yは磁北を指す Xは Y,Z の外積を指す 画面の回転を抑制する AndroidManifest.xmlで抑制する 回転させないActivityに android screenOrientation="portrait" を追加すると、縦向き固定になる activity | Android Developers 動的に(プラグラム内で)で抑制する Activity内で、setRequestedOrientation を呼び出す setRequestedOrientation - Activity | Android Developers screenOrientation - ActivityInfo | Android Developers インテントにオブジェクトの情報を乗っける bundleで多くの情報をわたすような方法として、putParcelableArrayList くらいしか見当たらないので、これを使う。そのためには、Parcelable をimplements したようなクラスを作る必要がある。 Bundle | Android Developers parcelable をインプリメントしたクラスをつくる Parcelable実装にはParcelable.Createorというstatic fieldが必要。そのフィールドの初期化にて、Parcelに保存したデータを復元するためのコンストラクタを呼ぶ。 Parcelable | Android Developers Parcelable.Creater フィールドの実装 Parcelable.Creater | Android Developers createFromParcel(Parcel source)Parcelable.writeToParcel() で書き出されたParcelデータをインスタンス化する → コンストラクタを作っておく newArray(int size)ParcelableクラスのArrayを作る BundleやIntentに情報を乗せる IntentならputParcelableArrayListExtra、BundleならputParcelableArrayList で情報を登録 putParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers Activity側で受ける IntentならgetParcelableで受けられる。受けたときにすでにParcelableをimplementしたオブジェクトで受けられる。 getParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers 複数の情報をリストにして表示する [https //www54.atwiki.jp/api_programming/pages/202.html] バイブレーションを一定時間、作動させる Vibratorインスタンスからvibrate()を実行する。バイブレーションの実施にはAndroidManifest.xmlにパーミッションの追加が必要。 パーミッションの追加 マニフェストにパーミッションを追加する - パーミッションの宣言 | Android Developers Vibratorオブジェクトを生成する getSystemServiceでVibratorオブジェクトを生成する Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); getSystemService - Context | Android Developers Vibrator | Android Developers vibrateを実行する 幾つかパターンはあるが、かんたんなところで、これ。 vibrator.vibrate(500); vibrate - Vibrator | Android Developers 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定する メニューリソースを準備し、表示させる。そのうえで、メニューのタップ動作に対する反応を記述する メニュー | Android Developers メニューリソースを準備する フォルダの作成 デフォルトではメニュー用のフォルダが無い(かもしれない)ので、res/menuを追加し、ここに入れておく。 resフォルダ右クリック [New]>[Android resource directory]を選択 ダイアログで、「Resource type 」から「menu」を選択し、OK リソースファイルの作成 menuフォルダを右クリック [New]>[Menu resource file] ファイル名を入力し、OK ファイル内に menu item / item / /menu を記述(実際はidやタイトルを設定する必要あり) Menu Resource | Android Developers 設定したメニューファイルを、Activityのメニューバーに評させる onCreateOptionMenuをオーバーライドして、この中でリソースの指定などを行う。XMLのメニューを実際?のメニューオブジェクトに変換するのに、inflatorを使用できる。 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); //(1) inflater.inflate(R.menu.menu_options_menu_list, menu); //(2) return super.onCreateOptionsMenu(menu); //(3) } onCreateOptionMenu - Activity | Android Developers メニューの選択を受け取る処理を作る オプションメニューを作っていれば、その受取はonOptionsItemSelectedをオーバーライドして処理できる。 @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } このとき、itemにクリックされた情報が入っているので、これを紐解いて、どのメニューがクリックされたか判断し、switchなどで処理する。 int itemId = item.getItemId(); Android 3.0(APIレベル11)以降では メニューリソースXMLのitemに、android onClick を記述しておくことで、動作を定義させることもできる。 チェックボックスを動作させる Android/入力コントロール(Controls) 設定画面を設定する/設定情報をローカルストレージに残す Android/設定 記録内容をGoogleスプレッドシートに記録する http //qiita.com/konnobu/items/8bec3d5a45235fc88a08 記録内容をGoogleカレンダーに記録する 多分、クライアント用のライブラリが作られていて、簡単に認証処理をしたり、データを取得したりできるようになっていると思われるが、別サイトでも転用が聞くように、地道な方法を取ってみる。というか、専用のライブラリの使い方をよくわかっていない。 流れは OAuth2.0で認証Google API にプロジェクトと登録(キーの発行) 認証コードを発行 受け取り コードを access token と交換 access token も使って、リクエスト送信 こまごまと引っかかった場所が多数。 AndroidManifest.xmlにパーミッションの設定が必要 ブラウザでURLを開く Android/インテントとインテントフィルタ ブラウザを開くURIとして、認証ページを指定する GoogleのOAuth2認証 OAuth2認証 | Android Developers Step 1 Send a request to Google's OAuth 2.0 server | Google Identify Platform リダイレクトを受け取る 大概の(google 以外でも)場合は、認証後に指定したリダイレクト先に飛ばしてくれる。そのスキーム名に応じて、Android側でどのアプリで開くのかを考えてくれる。Android に「このスキームがきたら、俺のアプリで開いて」と指示するためには、AndroidManifest.xml に記述する必要がある。 scheme // host port / path intent-filter内で、action, category, data を指定する。上記のリダイレクト先に対応する内容を書くのは data で、scheme は data android scheme="com.example.testproject" / のようになる。 Intent の 定数として ACTION_VIEW などが定義されているが、実体は文字列で、それが android.intent.action.VIEW などになる(ので、どれを設定するかはIntent を参照)。ブラウザでどんなスキームがきたらヨソになげるのか、どんな action として投げるのか、説明されている場所がわからないが、ひとまず action ACTION_VIEW category CATEGORY_BROWSABLR scheme ここは各自で で開けた。redirect_uri で scheme //~ が指定できない( /だけ)なので、hostは存在せず、pathだけ。 インテント解決 - インテントとインテント フィルタ | Android Developers Intent - Android Developers 受け取ったリダイレクトをデータに紐解く 一旦受け取れれば、中身は getIntent() を経由して、中身を見られる(Intent.getAction(), Intent.getCategories() など)。OAuth では、path のなかに code を入れて返してくるので、Dataのなかを探せばある Intent intent = getIntent(); String data = intent.getDataString(); とすると、googleの認証で指定した redirect_uri のあとに code がくっついて返ってきている。以下、サンプル com.example.####.#### /oauth2callback?code=4/8abcdefg# 上記の場合、oauth2callback を uri.getPath() で、4/8abcdefg# を getQueryParameter("code") で受け取れる。 getIntent - Activity | Android Developers getData - Intent | Android Developers getQueryParameter - Uri | Android Developers codeを送って、tokenを受け取る コードと必要情報を POST することで、access token との交換をする。この処理は、UIスレッドだとエラーになるので、AsyncTaskで実行する必要がある。 また、交換がうまく行かなかったときは、HttpURLConnection の getInputStream ではなく、 getErrorStream に情報が流れるため、プログラムの確認作業では注意。(この辺をよくわかっていなくて、エラー原因を探すのに苦労した。) redirect_uri はスキームもパスもコード発行依頼時と同じものを使う。 Android/プロセスとスレッド(processes and threads) Async Task | Android Developers tokenを保存する プレファレンスへの保存 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する https //www54.atwiki.jp/api_programming/editx/202.html USBデバッグ http //www.aiseesoft.jp/tutorials/android-debug-mode.html リリースビルド http //androidstudio.hatenablog.com/entry/2014/07/26/154043
https://w.atwiki.jp/redcloud/pages/25.html
目次 目次 四大要素 アクティビティ 状態変化時のコールバックメソッド 主なActivity 主なメソッド レイアウト定義(main.xml)で使える主なウィジェット インテント サービス コンテントプロバイダ 情報へのアクセス手段 memo/tips Androidに組み込まれているレイアウトを使う 指定インテントを取り扱えるアクティビティ一覧表示 設定画面を作成する リンク 四大要素 アクティビティ 状態変化時のコールバックメソッド onCreate onResume onStop 主なActivity Activity基底となるアクティビティクラス ListActivity一覧形式のアクティビティクラス ExpandableListActivity伸縮可能な一覧形式のアクティビティクラス MapActivity地図表示のアクティビティクラス PreferenceActivity設定情報を扱うアクティビティクラス 主なメソッド View findViewById(int id)idを指定してレイアウトファイルに定義されているウィジェットを取得 void finish()アクティビティを明示的に終了 Intent getIntent()このアクティビティを開始する契機となったインテントを取得 Application getApplication()このアクティビティが含まれるApplicationオブジェクトを取得 レイアウト定義(main.xml)で使える主なウィジェット TextView EditText ListView Button インテント サービス コンテントプロバイダ 情報へのアクセス手段 query insert update delete getType memo/tips Androidに組み込まれているレイアウトを使う android.R.layout.~ を使う。res/layout下にレイアウトxmlが無くてもOK(組み込まれているから) android.R.layout.simple_list_item_1 (例:ListActivityでよく使うシンプルリストレイアウト) 指定インテントを取り扱えるアクティビティ一覧表示 LaucherActivityを継承したアクティビティを作成する public class LauncherActivityExample extends LauncherActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.launcher_example); } @Override protected Intent getTargetIntent() { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http //developer.android.com/")); //ブラウザ系アクティビティが対象になる return intent; } } 設定画面を作成する PreferenceActivityを継承したアクティビティを作成する XMLで設定項目を定義する res/xml の下に定義ファイルを作成(例:res/xml/pref.xml)※eclipseで[新規]→[Android XML File]でウィザードを使って作成すると雛型ができて楽 Activityクラス public class PreferenceActivityExample extends PreferenceActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); //xmlの設定を読み込む場合はaddPreferencesFromResourceメソッド } } ソースコードで設定項目を定義する リンク
https://w.atwiki.jp/android/pages/136.html
ネット上に公開されているAndroidアプリケーションの索引 ※基本的にソース、あるいはapkファイルが公開されているもの。 ツール タスクマネージャ SDK version Task manager primitive prototype m3-rc37a以前 メディアプレイヤー Video/Music player sample (from local disk as well as remote URL’s) m3-rc37a以前 メール Send email via GMail (actually via SMTP) m3-rc37a以前 GoogleTalk Totally *Unofficial* Android GTalk Client (Send/Receive XMPP Messages) m3-rc37a以前 Android用Google Talkクライアントをm5-rc14に移植 m5-rc14 Mame Talk Ver.0.8 m5-rc14 Twitter Twitter Client for Android (How to make XML over HTTP calls) m3-rc37a以前 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (TwitterClient3.png) AndroidでTwitterクライアント ver.3 m3-rc37a以前 地図関連 Androidで地図アプリケーションを作ってみた m3-rc37a以前 Androidの地図アプリをぐるなびに対応しました m3-rc37a以前 Androidの地図アプリをm5-rc14っぽくしてみた m5-rc14 ビューア ComicViewer3 -Androidで電子ブックリーダ m3-rc37a以前 Android用電子ブックリーダをm5-rc14に移植 m5-rc14 ゲーム テーブルゲーム AndroidとFlickrで神経衰弱 m3-rc37a以前 ブロック崩しをm5-rc14に移植 m5-rc14 その他 アンドロイド・アプリケーション こめんと なるべく集めて回るけど作ったひとが自発的に追加してくれるとありがたいなあ - kojira 2008-02-12 21 54 53 プラグイン追加とかが自分で出来ないから不便だなあ。そのうち移転するかも。 - kojira 2008-02-18 23 09 07 名前
https://w.atwiki.jp/sunday_notebook/pages/21.html
お決まりの”Hello world!”の表示までを行いたいと思います。 どんなプログラムを学ぶ上でも基本中の基本、プログラムのいろはですね。 プログラムを初めてした時に、コンソールにHello world!と表示できた時のうれしさは忘れられません。 では進めたいと思います。 Androidの開発はEclipseで行いますので、Eclipseの起動を忘れずに。 目的:AVDのディスプレイ上に"Hello world!"と表示させる。 プロジェクトの作成 メニューから「File」→「New」→「Project...」を選択します。 「Select a wizard」ウィンドウのリストから「Android」→「Android Project」を選択し「Next」ボタンをクリックします。 「New Android Project」ウィンドウでプロジェクトの詳細設定をします。Project name:プロジェクトの名称(任意)を入力します。ここではHelloworldと入力します。 Contents:プロジェクトの生成方法です。ここではワークスペースに新しく作るため、「Create new project in workspace」を選択してください。 Use default location:プロジェクトの配置場所を決めます。特に変更はしませんので「Use default location」にチェックを入れておきます。 Build Target:アプリケーションを動作させるAndroidのバージョン(任意)を指定します。ここでは「Android 2.2」にチェックをしておきます。 Application name:AndroidのHome画面に表示されるアプリ名(任意)になります。ここではHelloworldと入力します。 Package name:プログラムのパッケージとしての名称(任意)です。普通はドメインを逆にしたような表記になります。ここではjp.android.helloworldと入力します。 Create Activity: 一般的なアプリはチェックボックスをオンにします。そして習慣としてプロジェクト名と同じにすることが決まっているようです。ここではHelloWorldと入力しましょう。 Min SDK Version:ターゲットとして選択したSDKのAPI Levelの数字を入力します。ここでは8と入力します。 全て入力が終わったら「Finish」をクリックします。(*1) メインディッシュ:開発! 開発と大げさに書きましたが、まだそこまで込み入ったことはしません。 説明の通りに進めてみて下さい。 自動生成されたファイルを開きます。 「HelloWorld」→「src」→「jp.android.helloworld」→「HelloWorld.java」と選択してください。 開いたファイルには以下のようなプログラムが書かれています。 package jp.android.helloworld;import android.app.Activity;import android.os.Bundle;public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 以下のように変更します。 少し分かりづらいかもしれませんね。 4行追加し、一行削除しています。 package jp.android.helloworld;import android.app.Activity;import android.os.Bundle;import android.widget.TextView; // 追加1public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView display = new TextView(this); // 追加2 display.setText("Hello world!"); // 追加3 setContentView(display); // 追加4 //setContentView(R.layout.main); これは削除します。 } } 以下、追加したソースの説明になります。 import android.widget.TextView; Androidで画面に表示する場合はViewクラスのサブクラスを使用します。 具体的にここではTextViewクラスを使用して、文字列の表示を行います。 そのためここでTextViewクラスを使用することを宣言します。 TextView display = new TextView(this); TextViewクラスのインスタンスを生成します。 引数にはContextクラスを指定します。 ここではthis(自分自身:HelloWorld)を指定していますが、HelloWorldクラスはContextクラスを継承しています。 display.setText("Hello world!"); TextViewクラスのsetTextメソッドを使用して、表示する文字列を設定します。 setContentView(display); Activityクラスから継承したsetContentViewメソッドを使用し、ディスプレイに表示する内容の設定をします。 自動生成されていた以下のソースは重複してしまうため削除します。 setContentView(R.layout.main); ソースの変更はここまでです。 変更したjavaファイルを保存してください。 AVD上でアプリを動かしてみる。 メニューから「Run」→「Run As」→「Android Application」を選択します。 するとAVDが起動し、アプリをテストする準備を始めます。 これがちょっと時間かかります。 じれったいかもしれませんが、自分の作ったプログラムが走る瞬間を迎えるためにぐっと我慢しましょうw Androidの起動が終わったら、AVD上の「MENU」ボタンをクリックします。 プログラムに間違いがなければ、ディスプレイには"HelloWorld!"と表示されます。
https://w.atwiki.jp/yoshiumi41/pages/95.html
?xml version="1.0" encoding="utf-8"? LinearLayout xmlns android="http //schemas.android.com/apk/res/android" android layout_width="match_parent" android layout_height="match_parent" android orientation="vertical" TextView android layout_width="match_parent" android layout_height="wrap_content" android text="@string/tv_title" android textSize="24.0sp" / LinearLayout android layout_width="match_parent" android layout_height="wrap_content" android orientation="horizontal" TextView android layout_width="70dp" android layout_height="wrap_content" android text="@string/tv_name" / EditText android layout_width="200dp" android layout_height="wrap_content" android inputType="text" / /LinearLayout LinearLayout android layout_width="match_parent" android layout_height="wrap_content" android orientation="horizontal" TextView android layout_width="70dp" android layout_height="wrap_content" android text="@string/tv_address" / EditText android layout_width="200dp" android layout_height="wrap_content" android inputType="text" / /LinearLayout LinearLayout android layout_width="match_parent" android layout_height="wrap_content" android orientation="horizontal" TextView android layout_width="70dp" android layout_height="wrap_content" android text="@string/tv_birthday" / Spinner android layout_width="85dp" android layout_height="wrap_content" android entries="@array/month" / TextView android layout_width="20dp" android layout_height="wrap_content" android text="@string/tv_month" / Spinner android layout_width="85dp" android layout_height="wrap_content" android entries="@array/day" / TextView android layout_width="20dp" android layout_height="wrap_content" android text="@string/tv_day" / /LinearLayout LinearLayout android layout_width="match_parent" android layout_height="wrap_content" android layout_marginTop="10dp" android orientation="horizontal" TextView android layout_width="70dp" android layout_height="wrap_content" android text="@string/tv_sex" / RadioGroup android layout_width="match_parent" android layout_height="match_parent" android orientation="horizontal" RadioButton android layout_width="wrap_content" android layout_height="wrap_content" android text="@string/tv_man"/ RadioButton android layout_width="wrap_content" android layout_height="wrap_content" android text="@string/tv_woman"/ /RadioGroup /LinearLayout LinearLayout android layout_width="wrap_content" android layout_height="wrap_content" android layout_marginLeft="45dp" android layout_marginRight="45dp" android paddingLeft="5dp" android paddingRight="5dp" android orientation="horizontal" android background="#003399" TextView android layout_width="150dp" android layout_height="wrap_content" android text="@string/tv_item" android textColor="#FFFFFF" / TextView android layout_width="wrap_content" android layout_height="wrap_content" android text="@string/tv_number" android textColor="#FFFFFF" / /LinearLayout LinearLayout android layout_width="wrap_content" android layout_height="wrap_content" android layout_marginLeft="50dp" android layout_marginRight="50dp" android orientation="horizontal" CheckBox android layout_width="160dp" android layout_height="wrap_content" android text="@string/apple"/ EditText android layout_width="50dp" android layout_height="wrap_content" android inputType="number"/ /LinearLayout LinearLayout android layout_width="wrap_content" android layout_height="wrap_content" android layout_marginLeft="50dp" android layout_marginRight="50dp" android orientation="horizontal" CheckBox android layout_width="160dp" android layout_height="wrap_content" android text="@string/orange"/ EditText android layout_width="50dp" android layout_height="wrap_content" android inputType="number"/ /LinearLayout LinearLayout android layout_width="wrap_content" android layout_height="wrap_content" android layout_marginLeft="50dp" android layout_marginRight="50dp" android orientation="horizontal" CheckBox android layout_width="160dp" android layout_height="wrap_content" android text="@string/peach"/ EditText android layout_width="50dp" android layout_height="wrap_content" android inputType="number"/ /LinearLayout Button android layout_width="180dp" android layout_height="wrap_content" android layout_gravity="center_horizontal" android text="@string/send"/ /LinearLayout
https://w.atwiki.jp/android/pages/54.html
Androidオフを開催したいなあと思う今日この頃です。 とりあえず安藤恐竜さんが提案された場所を書いておきます。 豆ナイト"春の陣 電気羊は桜吹雪の夢を見るか" Android関連の無料勉強会が2008年4月下旬に開催される模様。開催後に自動的にオフに突入? 他にもどんどん書き込んでおくんなまし オフについて開催場所とか日時とか、その他何でもコメントどうぞ! 関西でも開催したいけど誰かいないかなあ - kojira 2008-03-19 19 45 37 Google I/OでSan Franciscono - 安藤恐竜? 2008-03-20 17 53 55 なんか変なところで改行押しちゃった、すみません。豆ナイトは日程発表があって、都合がついて、当選したら行きます。 - 安藤恐竜? 2008-03-20 17 56 21 豆ナイト当選したら何とか時間作ってみます - kojira 2008-03-21 18 06 33 Googleデベロッパー交流会申し込みました。晩も交流しましょう! - kojira 2008-04-03 19 21 20 Googleデベロッパー交流会、もう定員になってるみたいですね。間に合ってよかった - kojira 2008-04-07 12 17 15 4/18(金)の日経セミナー逝きます。ついでに夜、オフ会できるなら、お泊りにしちゃおーかなー。 - 安藤恐竜? 2008-04-11 07 00 00 日経の方は行けないかも・・・。無念。。。 - kojira 2008-04-11 09 43 00 豆ナイト応募しましたー - kojira 2008-04-14 15 47 03 ほぼ素人同然ですが、Andoridには興味あるので豆ナイト参加したいです! - irimameo? 2008-04-16 16 57 47 名前
https://w.atwiki.jp/android-reference/pages/21.html
android Contains the resource classes used by standard Android applications. Classes Manifest Manifest.permission Manifest.permission_group R R.anim R.array R.attr R.bool R.color R.dimen R.drawable R.id R.integer R.layout R.plurals R.raw R.string R.style R.styleable R.xml コメント 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/interaction_android/pages/15.html
@Android Project ここでは、大阪工業大学情報科学部のプロジェクトの1つであるAndroid Project Team[○○]の情報共有Wikiです. 基本的には、何かあればこちらを編集して、情報共有を行っていきたいと思います. 学内課題サイト(学内課題 http //interactiondesign.web.fc2.com/index.html) @目的(作成するもの) @会議結果 第1回 第2回 @方針 基本的にLineかSkypeで行う(リーダーのidea) 時間帯は @メンバー リーダー堤下 裕介 サブリーダー高 潔 プログラムリーダー野田 尚吾 デザインリーダー金元 優香 ビジネスモデルリーダー黒澤 一郎 他のメンバー大井 翔 幸 孝明 加藤 嘉寿 @デザイン @セットアップ セットアップページ @アンケートページ アンケート結果 @更新情報 日 付 内 容 2012/08/01 AndroidProjectページ開設 2012/08/03 Androidセットアップページ開設 2012/08/15 アンケート結果ページ開設
https://w.atwiki.jp/m_shige1979/pages/1483.html
雛形作成 概要 雛形作成 準備 Android SDKの雛形作成と同様の方法でプロジェクトを作成する 手順 指定のプロジェクトを選択して、右クリックし、「Androidツール」>「Add Native Support」をクリック モジュール名を設定 コンソールに「Unable to launch cygpath. Is Cygwin on the path?…」のようなメッセージが表示されるが無視して良い jniなどのディレクトリが作成されていることを確認 コマンドプロンプトより移動して、アクティビティのcppファイル用のヘッダーファイルを作成 C \Users\xxxx cd C \Users\xxxx\Desktop\adt-bundle-windows-x86_64-20130219\workspace\Sample\jni C \Users\xxxx\Desktop\adt-bundle-windows-x86_64-20130219\workspace\Sample\jni javah -o ./sample.hpp -classpath "../bin/classes;../../../sdk/platforms/android-7/data/layoutlib.jar;" app.example.sample.MainActivity C \Users\xxxx\Desktop\adt-bundle-windows-x86_64-20130219\workspace\Sample\jni sample.hppの中身 /* DO NOT EDIT THIS FILE - it is machine generated */ #include jni.h /* Header for class app_example_sample_MainActivity */ #ifndef _Included_app_example_sample_MainActivity #define _Included_app_example_sample_MainActivity #ifdef __cplusplus extern "C" { #endif #undef app_example_sample_MainActivity_MODE_PRIVATE #define app_example_sample_MainActivity_MODE_PRIVATE 0L #undef app_example_sample_MainActivity_MODE_WORLD_READABLE #define app_example_sample_MainActivity_MODE_WORLD_READABLE 1L #undef app_example_sample_MainActivity_MODE_WORLD_WRITEABLE #define app_example_sample_MainActivity_MODE_WORLD_WRITEABLE 2L #undef app_example_sample_MainActivity_MODE_APPEND #define app_example_sample_MainActivity_MODE_APPEND 32768L #undef app_example_sample_MainActivity_BIND_AUTO_CREATE #define app_example_sample_MainActivity_BIND_AUTO_CREATE 1L #undef app_example_sample_MainActivity_BIND_DEBUG_UNBIND #define app_example_sample_MainActivity_BIND_DEBUG_UNBIND 2L #undef app_example_sample_MainActivity_CONTEXT_INCLUDE_CODE #define app_example_sample_MainActivity_CONTEXT_INCLUDE_CODE 1L #undef app_example_sample_MainActivity_CONTEXT_IGNORE_SECURITY #define app_example_sample_MainActivity_CONTEXT_IGNORE_SECURITY 2L #undef app_example_sample_MainActivity_CONTEXT_RESTRICTED #define app_example_sample_MainActivity_CONTEXT_RESTRICTED 4L #undef app_example_sample_MainActivity_RESULT_CANCELED #define app_example_sample_MainActivity_RESULT_CANCELED 0L #undef app_example_sample_MainActivity_RESULT_OK #define app_example_sample_MainActivity_RESULT_OK -1L #undef app_example_sample_MainActivity_RESULT_FIRST_USER #define app_example_sample_MainActivity_RESULT_FIRST_USER 1L #undef app_example_sample_MainActivity_DEFAULT_KEYS_DISABLE #define app_example_sample_MainActivity_DEFAULT_KEYS_DISABLE 0L #undef app_example_sample_MainActivity_DEFAULT_KEYS_DIALER #define app_example_sample_MainActivity_DEFAULT_KEYS_DIALER 1L #undef app_example_sample_MainActivity_DEFAULT_KEYS_SHORTCUT #define app_example_sample_MainActivity_DEFAULT_KEYS_SHORTCUT 2L #undef app_example_sample_MainActivity_DEFAULT_KEYS_SEARCH_LOCAL #define app_example_sample_MainActivity_DEFAULT_KEYS_SEARCH_LOCAL 3L #undef app_example_sample_MainActivity_DEFAULT_KEYS_SEARCH_GLOBAL #define app_example_sample_MainActivity_DEFAULT_KEYS_SEARCH_GLOBAL 4L /* * Class app_example_sample_MainActivity * Method stringFromJNI * Signature ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_app_example_sample_MainActivity_stringFromJNI (JNIEnv *, jobject); /* * Class app_example_sample_MainActivity * Method unimplementedStringFromJNI * Signature ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_app_example_sample_MainActivity_unimplementedStringFromJNI (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif jni配下にある、cppファイルを編集して関数を作成 sample.cpp #include jni.h #include string.h #include sample.hpp JNIEXPORT jstring JNICALL Java_app_example_sample_MainActivity_stringFromJNI (JNIEnv *env, jobject) { return (env)- NewStringUTF("Jni Test Sample"); } ※作成したsample.hppを必ず指定する必要があります。 アクティビティにモジュールの機能を組み込む MainActivity.java package app.example.sample; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.TextView; import app.example.sample.R; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // テキストビューのオブジェクトを取得して文字列を設定 TextView text1 = (TextView) findViewById(R.id.textView1); String a = stringFromJNI(); text1.setText(a); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } // NDKの定義 public native String stringFromJNI(); public native String unimplementedStringFromJNI(); static { System.loadLibrary("sample"); } } cppファイルをコンパイル C \Users\xxxx\Desktop\adt-bundle-windows-x86_64-20130219\workspace\Sample\jni ndk-build "Compile++ thumb sample = sample.cpp StaticLibrary libstdc++.a SharedLibrary libsample.so Install libsample.so = libs/armeabi/libsample.so C \Users\xxxx\Desktop\adt-bundle-windows-x86_64-20130219\workspace\Sample\jni eclipseよりjniフォルダに"Application.mk"を作成して、以下の値を設定 APP_PLATFORM = android-8 ビルドして、実機にて確認